/**
 * 
 */
package cn.edu.bjtu.entity.impl.lightweight;

import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.message.BasicNameValuePair;

import cn.edu.bjtu.entity.impl.BaseHttpContextWithoutLock;
import cn.edu.bjtu.entity.impl.FakeRequest;
import pojo.dto.services.TCClassifyResult;

/**
 * 用于提交文本,并获取文本分类结果
 * 对应deep4j里面URL:
 *	/cnn/predict
 *  所需要参数名: doc
 * @author alex
 *
 */
public class TCPredictDocumentAPI extends BaseDefaultConfiged<TCClassifyResult>{
	String doc = "";
	/**
	 * 把参数的获取放在构造函数中,不要写在controller中了
	 * @param req
	 */
	public TCPredictDocumentAPI(HttpServletRequest req) {
		doc = req.getParameter("doc");
		
	}
	@Override
	public Map<String, Object> getResultMapForRender() {
		return null;
	}

	public  HttpEntity getPostEntity(){
		List<NameValuePair> l = new ArrayList<NameValuePair>();
		l.add(new BasicNameValuePair("doc", this.doc));
		UrlEncodedFormEntity uefe = new UrlEncodedFormEntity(l,Charset.forName("utf-8"));
		return uefe;
	}
	@Override
	public URI getURI() {
		return URI.create("/cnn/predict");
	}
	@Override
	protected void handleResponseInputStream(InputStream in, HttpEntity entity) throws Exception {
		result = om.readValue(in, TCClassifyResult.class);
	}
	public static void main(String[] args) {
		HashMap<Object,Object> map = new HashMap<Object,Object>();
		map.put("doc", "会上，习近平语重心长地说：“人世间的一切成就、一切幸福都源于劳动和创造。时代总是不断发展的，等你们长大了，生活将发生巨大变化，科技也会取得巨大进步，需要你们用新理念、新知识、新本领去适应和创造新生活，这样一个民族、人类进步才能生生不息。从现在起，你们就要争当勤奋学习、自觉劳动、勇于创造的小标兵。”是中国历史上一个有名的人物");
		FakeRequest fr = new FakeRequest(map);
		TCPredictDocumentAPI tpda = new TCPredictDocumentAPI(fr);
		tpda.fire();
		TCClassifyResult r = tpda.javaClassResult();
		System.out.println(Arrays.toString(r.getData()));
	}
}
